package Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;


import java.util.List;

public class SIS_VERSION {

    private String DESCRIPCION;
    private String TIPO;
    private Double ID;
    private Double ID_CUENTA;
    private Double ID_CENTRO_COSTO;
    private String ACCION;
    private Conexion con = null;

    public SIS_VERSION(Conexion con) {
        this.con=con;
    }
    public boolean Insertar(double padre,String tipo,String Descripcion,double cuenta,double centro,String accion) {
        try {
            String cc=""+centro;
            String c=""+cuenta;
            if(cuenta==0.0){
                c="null";
            }
            if(centro==0.0){
                cc="null";
            }
            String consulta="";
            if(accion.equals("I") && tipo.equals("cuenta")){
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuenta" + "'," + c + "," + cc + ",' se creo la cuenta " + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaCentro" + "'," + c + "," + cc + ",' se creo la cuenta Codigo" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaHoja" + "'," + c + "," + cc + ",' se creo la cuenta " + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
                if(padre!=0){
                    consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaHoja" + "'," + (int)padre + "," + cc + ",'La cuenta "+padre+" ya no es cuenta hoja','E')";
                    con.EjecutarSentencia(consulta);  
                }
            }
            if(accion.equals("E") && tipo.equals("cuenta")){
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaHoja" + "'," + c + "," + cc + ",'La cuenta "+c+" se a eliminado','E')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaCentro" + "'," + c + "," + cc + ",'La cuenta Centro "+c+" se a eliminado','E')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuenta" + "'," + c + "," + cc + ",'La cuenta "+c+" se a eliminado','E')";
                con.EjecutarSentencia(consulta);
                if(padre !=0){
                    consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaHoja" + "'," + (int)padre + "," + cc + ",'La cuenta "+c+" se iso cuenta hoja','I')";
                    con.EjecutarSentencia(consulta);
                }
            }
            if(accion.equals("M") && tipo.equals("cuenta")){
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuenta" + "'," + c + "," + cc + ",'La cuenta "+c+" se a Modificado','M')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuentaCentro" + "'," + c + "," + cc + ",'La cuenta Centro "+c+" se a Modificado','M')";
                con.EjecutarSentencia(consulta);
                if(padre==0){
                    consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + "cuenta" + "'," + c + "," + cc + ",'La cuenta "+c+" se a Modificado','M')";
                    con.EjecutarSentencia(consulta);
                }
            }
            if(accion.equals("I") && tipo.equals("centro")){
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + tipo + "'," + c + "," + cc + ",'" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('centroCodigo'," + c + "," + cc + ",'" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
            }
            if(accion.equals("E") && tipo.equals("centro")){
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + tipo + "'," + c + "," + cc + ",'" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('centroCodigo'," + c + "," + cc + ",'" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
            }
            if(accion.equals("M") && tipo.equals("centro")){
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('" + tipo + "'," + c + "," + cc + ",'" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
                consulta = "insert into BROKER.SIS_VERSION(TIPO,ID_CUENTA,ID_CENTRO_COSTO,DESCRIPCION,ACCION) VALUES ('centroCodigo'," + c + "," + cc + ",'" + Descripcion +"','"+accion+"')";
                con.EjecutarSentencia(consulta);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    public  List<SIS_VERSION> getUltimaVersion(String tipo) throws SQLException
    {
        String consulta = "select * from BROKER.SIS_VERSION where TIPO like('"+tipo+"')";
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);        
    }
    public String getVersion(String tipo) throws SQLException
    {
        String consulta = "select count(*) as cant from BROKER.SIS_VERSION where TIPO like('"+tipo+"')";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getString("cant");        
    }
    public  List<SIS_VERSION> Cargar(ResultSet rs) {
        try {
            List<SIS_VERSION> lista = new ArrayList<SIS_VERSION>();
            while (rs.next()) {
                SIS_VERSION objeto = new SIS_VERSION(con);
                objeto.setDESCRIPCION(rs.getString("DESCRIPCION"));
                objeto.setID_CENTRO_COSTO(rs.getDouble("ID_CENTRO_COSTO"));
                objeto.setACCION(rs.getString("ACCION"));
                objeto.setID_CUENTA(rs.getDouble("ID_CUENTA"));
                objeto.setTIPO(rs.getString("TIPO"));
                objeto.setID(rs.getDouble("ID"));
                objeto.setCon(con);
                lista.add(objeto);
            }
            return lista;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }
    public String getDESCRIPCION() {
        return DESCRIPCION;
    }

    public String getACCION() {
        return ACCION;
    }

    public void setACCION(String ACCION) {
        this.ACCION = ACCION;
    }

    public void setDESCRIPCION(String DESCRIPCION) {
        this.DESCRIPCION = DESCRIPCION;
    }

    public String getTIPO() {
        return TIPO;
    }

    public void setTIPO(String TIPO) {
        this.TIPO = TIPO;
    }

    public Double getID() {
        return ID;
    }

    public void setID(Double ID) {
        this.ID = ID;
    }

    public Double getID_CUENTA() {
        return ID_CUENTA;
    }

    public void setID_CUENTA(Double ID_CUENTA) {
        this.ID_CUENTA = ID_CUENTA;
    }

    public Double getID_CENTRO_COSTO() {
        return ID_CENTRO_COSTO;
    }

    public void setID_CENTRO_COSTO(Double ID_CENTRO_COSTO) {
        this.ID_CENTRO_COSTO = ID_CENTRO_COSTO;
    }

    public Conexion getCon() {
        return con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
    
}
